//
//  POIModelDataSourceProtocol.swift
//  travelMapMvvm
//
//  Created by green on 15/9/11.
//  Copyright (c) 2015年 travelMapMvvm. All rights reserved.
//

import ReactiveCocoa
import Foundation

public protocol POIModelDataSourceProtocol {
    
    /**
     查询攻略POI
     
     - parameter poiTypeCodes: 目的地类型数组
     - parameter strategyId:   攻略ID
     
     - returns: 攻略POI
     */
    func queryPOIListByStrategyId(poiTypeCodes:[String]?,strategyId:String) -> RACSignal
    
    /**
     查询城市POI
     
     - parameter pageIndex:    页码
     - parameter pageSize:     记录数/页
     - parameter poiTypeCodes: 目的地类型数组
     - parameter cityId:       城市ID
     
     - returns: 城市POI
     */
    func queryPOIListByCityId(pageIndex:Int,pageSize:Int,poiTypeCodes:[String]?,cityId:String) -> RACSignal
    
    /**
     查询关键字POI
     
     - parameter pageIndex:    页码
     - parameter pageSize:     记录数/页
     - parameter poiTypeCodes: 目的地类型数组
     - parameter keyword:      关键字
     
     - returns: 关键字POI
     */
    func queryPOIListByKeyword(pageIndex:Int,pageSize:Int,poiTypeCodes:[String]?,keyword:String) -> RACSignal
    
    /**
     查询已收藏的POI
     
     - parameter pageIndex:    页码
     - parameter pageSize:     记录数/页
     - parameter poiTypeCodes: 目的地类型数组
     - parameter userId:       用户ID
     
     - returns: 已收藏的POI
     */
    func queryPOIListByUserId(pageIndex:Int,pageSize:Int,poiTypeCodes:[String]?,userId:String) -> RACSignal
    
    /**
     查询指定目的地周边POI
     
     - parameter pageIndex:    页码
     - parameter pageSize:     记录数/页
     - parameter poiTypeCodes: 目的地类型数组
     - parameter centerPoiId:  指定目的地ID
     
     - returns: 指定目的地周边POI
     */
    func queryPOIListByCenterPOIId(pageIndex:Int,pageSize:Int,poiTypeCodes:[String]?,centerPoiId:String,poiType:Int) -> RACSignal
    
    /**
     收藏/取消目的地
     
     - parameter poiId:  目的地ID
     - parameter userId: 用户ID
     
     - returns:
     */
    func collectPOI(poiId:String, userId:Int, isFavorite:Bool,poiType:Int) -> RACSignal
    
    /**
     去过/取消目的地
     
     - parameter poiId:  目的地ID
     - parameter userId: 用户ID
     
     - returns:
     */
    func didVisitPOI(poiId:String, userId:Int, isTraveled:Bool,poiType:Int) -> RACSignal
}